package sort.choiceSort;

/**
 * @Author: zhang
 * @Description:
 * @Date: Created in 16:39 2019/9/30
 */
public class Test {
    public static void main(String[] args) {
        int[] arrays = new int[]{5, 1, 7, 4, 8, 9, 2, 3, 6, 0};
        choiceSort(arrays);
        for (int i = 0; i < arrays.length; i++) {
            if (i != arrays.length - 1) {
                System.out.print(arrays[i] + " ");
            } else {
                System.out.print(arrays[i]);
            }
        }
    }

    /**
     * 选择排序
     * 每次选择一个最小的确定位置
     */
    public static void choiceSort(int[] a) {
        //总共的比较次数 n-1
        for (int i = 0; i < a.length - 1; i++) {
            int minIndex = i;
            //每轮需要比较的次数 n-i
            for (int j = i + 1; j < a.length; j++) {
                if(a[j] < a[minIndex]){
                    //记录目前找到的最小值下标
                    minIndex = j;
                }
            }
            //如果当前i不是最小的那个下标，就需要交换
            if(i != minIndex){
                a[i] ^= a[minIndex];
                a[minIndex] ^= a[i];
                a[i] ^= a[minIndex];
            }
        }
    }
}
